package com.olah.user.controller;

import com.olah.common.entity.dto.UtilResponse;
import com.olah.common.entity.po.user.AddFriendConfig;
import com.olah.common.entity.po.user.Friend;
import com.olah.user.service.FriendService;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * Friend Controller
 */
@RefreshScope
@RestController
@RequestMapping("/user/friend")
public class FriendController {

    @Resource
    private FriendService service;

    /**
     * 获取添加好友的验证方式
     * @param targetId 目标用户id
     */
    @GetMapping("/query/method")
    public UtilResponse<AddFriendConfig> queryAddMethod(@RequestParam("targetId") int targetId) {
        return UtilResponse.success(service.queryAddMethod(targetId));
    }

    /**
     * 更新添加好友的验证方式
     * @param config
     */
    @PostMapping("/update/method")
    public UtilResponse<Boolean> updateAddMethod(@RequestBody AddFriendConfig config) {
        return service.updateAddMethod(config)
            ? UtilResponse.success("更新成功", true)
            : UtilResponse.error("保存失败, 请稍后再试");
    }

    /**
     * 判断两个用户是不是好友关系
     * @param myId 自己的 id
     * @param anotherId 对方的 id
     */
    @GetMapping("/isFriend")
    public UtilResponse<Boolean> isFriend(
        @RequestParam("myId") int myId,
        @RequestParam("anotherId") int anotherId
    ) {
        return UtilResponse.success(service.isFriend(myId, anotherId));
    }

    /**
     * 获取对于指定用户而言，另一个用户的备注名
     * @param myId 自己的 id
     * @param anotherId 对方的 id
     */
    @GetMapping("/notename")
    public UtilResponse<String> noteName(
        @RequestParam("myId") Integer myId,
        @RequestParam("anotherId") Integer anotherId
    ) {
        return UtilResponse.success(service.noteName(myId, anotherId));
    }

    /**
     * 查询我的好友列表
     * @param id 我的 id
     */
    @GetMapping("/myFriend")
    public UtilResponse<List<Friend>> getMyFriends(@RequestParam("id") Integer id) {
        return UtilResponse.success(service.queryMyFriends(id));
    }

}
